home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga News 95
/
Amiga News 95.iso
/
dpat
/
dpat01
/
amimac
/
amimac.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-21
|
5KB
|
133 lines
/* AmiMac v1.2 -- Michel Laliberté, mars 1990 */
#include <stdio.h>
main(argc,argv)
int argc;
char *argv[];
{
short conv = 0;
register char b;
register char c;
register short lf=0;
FILE *fp;
FILE *pf;
if(((argc != 4) && (argc != 5)) || (argv[1][0] == '?'))
{
printf("\f");
printf("
AmiMac v1.0 - mars 1990
INSTRUCTIONS \n\n");
printf(" Ce programme convertit les accents français des fichiers\n");
printf(" ASCII Amiga en accents français MacIntosh, et vice-versa.\n");
printf(" Utiliser File Transfer ou un modem pour convertir le fichier.\n\n");
printf("
FORMAT D'UTILISATION:
\n\n");
printf(" 1> amimac source dest xxx [lf] Place dans le fichier dest\n");
printf(" la version convertie du\n");
printf(" fichier source.\n\n");
printf(" * Si xxx = mac, le sens de la conversion est: Amiga -> Mac\n");
printf(" * Si xxx = ami, on prend le sens contraire: Mac -> Amiga\n\n");
printf(" * lf (facultatif): change les CR (Mac) en LF (Amiga) ou l'inverse.\n");
printf(" * Pour des résultats plus rapides, travailler en RAM:\n");
printf(" ex.: 1> amimac ram:n_du_fichier ram:conv.1 mac \n");
printf("
CE PROGRAMME EST GRATUIT - REVENTE INTERDITE
\n");
printf(" Michel Laliberté, Montréal - tél.: (514) 274-0288\n\n");
exit(0);
}
else if (argc >=4 && !strcmp(argv[3],"mac")) conv=1;
else if (argc >=4 && !strcmp(argv[3],"ami")) conv=2;
else if (conv==0){
printf("FORMAT: 1> amimac source destination xxx [lf] \n");
printf(" \"xxx\" doit être \"ami\" ou \"mac\".\n\n");
exit(0);
}
if (argc ==5 && !strcmp(argv[4],"lf")) lf = 1;
if((fp=fopen(argv[1],"r")) == NULL) {
printf(" Impossible d'ouvrir le fichier source...\n");
exit(0);
}
if((pf=fopen(argv[2],"w")) == NULL) {
printf(" Impossible d'ouvrir le fichier destination...\n");
exit(0);
}
if (conv==1) /* Ami -> Mac */
{
b=getc(fp);
while (b!=EOF) { /* boucle de lecture-ecriture */
if (lf && (b == 10)) b = 13; /* convertit LF en CR */
if (b>='à' || b=='É') switch(b) {
case 'à':
b=136;break;
case 'â':
b=137;break;
case 'é':
b=142;break;
case 'ê':
b=144;break;
case 'è':
b=143;break;
case 'ë':
b=145;break;
case 'ï':
b=149;break;
case 'î':
b=148;break;
case 'ô':
b=153;break;
case 'ù':
b=157;break;
case 'û':
b=158;break;
case 'ü':
b=159;break;
case 'ç':
b=141;break;
case 'É':
b=131;
}
putc(b,pf); /* Ecrit un caractère */
b=getc(fp); /* Va en chercher un autre */
}
fclose(fp);
fclose(pf);
}
if (conv==2) /* Mac -> Ami */
{
b=getc(fp);
while (b!=EOF) {
if (lf && (b == 13)) b = 10; /* convertit CR en LF */
c=(b-64); /* décalage de -64 pour les caract. invisibles*/
if (c >= 'C' || c <= '_') switch(c) {
case 'H':
b=224;break;
case 'I':
b=226;break;
case 'N':
b=233;break;
case 'P':
b=234;break;
case 'O':
b=232;break;
case 'Q':
b=235;break;
case 'U':
b=239;break;
case 'T':
b=238;break;
case 'Y':
b=244;break;
case ']':
b=249;break;
case '^':
b=251;break;
case '_':
b=252;break;
case 'M':
b=231;break;
case 'C':
b=201;
}
putc(b,pf);
b=getc(fp);
}
fclose(fp);
fclose(pf);
}
}